iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 9
0
Modern Web

用30天了解javascript系列 第 9

[用30天了解javascript]Day9. 流程控制-迴圈

  • 分享至 

  • xImage
  •  

在你指定的條件成立時,就會反覆地執行某一段程式敘述。
使用時也要非常謹慎,條件成立時,就會一直重複執行,可能會造成無窮迴圈。
較常使用的迴圈是 for、while

for

需要以程式碼執行次數作為迴圈的條件。
可以用const、let、var來宣告,但建議使用const、let宣吿,因為生命週期只會在迴圈裡面,迴圈結束時變數就會跟著結束。
https://ithelp.ithome.com.tw/upload/images/20200928/20112053CRef5k1k0E.jpg

for(初始狀態;條件;更新內容){
	// 執行內容
}

//ex:輸出1-4
for(let i = 0; i < 5; i++) {
    console.log(i); // -> 0 1 2 3 4 
}
//比較下方兩者,sum放置位置輸出結果
//把sum放在迴圈外面,每跑一次就會加總,放裡面,結束迴圈後就會消失
let sum = 0
for(let i = 0; i < 5; i++) {
    sum += i;
		console.log(sum); //->10

}
for(let i = 0; i < 5; i++) {
    let sum= 0;
    sum += i;
    console.log(sum); //-> 0 1 2 3 4
}

for...in

for(let 變數 in 物件){
   程式敘述
}
//ex:
//用於陣列
let aArray = [1, 2, 3]
for (let value in aArray) {
	console.log(value); // 取索引值0 1 2
	console.log(aArray[value]); // 取key對應的值 1 2 3
}
//用於字串
let aString = "abcd";
for (let value in aString) {
  console.log(value); // 0 1 2 3
	console.log(aString[value]); // a b c d
}

for...of/forEach

  • for...of/forEach皆可使用陣列、字串、Map物件、Set物件...

for...of

//for...of
for(let 變數 in 物件){
	程式敘述
}
//ex:
//用於陣列
let aArray = [1, 2, 3]
for (let value of aArray) {
  console.log(value) // 1 2 3
}
//用於字串
let aString = "abcd";
for (let value of aString) {
  console.log(value); // a b c d
}

forEach

物件.forEach(function(參數[,index]){
	程式敘述
})
//箭頭函式
物件.forEach(參數 => {
	程式敘述
})
//ex:
let aArray = [1, 2, 3];
aArray.forEach(x => {
	console.log(x); // 1 2 3
}) 

for...in/for...of差別

  • for...in 輸出的是key,for...of 輸出的是value
  • for...in與for...of迴圈比較起來for...of比較好,但是是ES6新規範,所以要考量瀏覽器是否支援問題。
  • for...of不能循環普通對象,要透過object.keys()

while

不知道程式碼執行次數時使用,迴圈條件非計數器
https://ithelp.ithome.com.tw/upload/images/20200929/20112053bSPGZshnff.jpg

while(條件){
	// 執行內容
}

//ex:輸出1-10
let num = 1;
while(num < 11){
	console.log(num); // -> 1 2 3 4 5 6 7 8 9 10
	num++;
}

while(num > 11){
	console.log(num); // 不會執行
	num++;
}

do...while

類似while,條件為 false 時,程式碼至少執行一次
https://ithelp.ithome.com.tw/upload/images/20200929/20112053aIGSwbOPMI.jpg

do{
	// 執行內容
}while(條件)

//ex:輸出1-10
let num = 1;
do{
	console.log(num); // -> 1 2 3 4 5 6 7 8 9 10
	num++;
}while(num < 11);

do{
	console.log(num); // -> 1 (至少執行一次)
	num++;
}while(num > 11);

跳出迴圈break、continue

都是用來控制迴圈,break是強迫中止迴圈的執行;continue是回到迴圈的一開始,再繼續執行迴圈

break

  • 強制跳出並結束當前的循環結構
  • 搭配if使用
var i = 0;
var n = 0;
while (i < 5) {
  i++;
  console.log('i='+i); //->1 2 3
  if (i == 3) {
    break;
  }
  n += i;
  console.log('n='+n ); //->1 3
}

continue

  • 忽略其後的語句並結束此輪循環和開始新的一輪循環
  • 搭配if使用,可減少if的嵌套
let i = 0;
let n = 0;
while (i < 5) {
  i++;
  console.log('i='+i); //->1 2 3 4 5
  if (i == 3) {
    continue;
  }
  n += i;
  console.log('n='+n ); //->1 3 X 7 12
}

上一篇
[用30天了解javascript]Day8.流程控制-條件句
下一篇
[用30天了解javascript]Day10. 流程控制-例外處理
系列文
用30天了解javascript30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言